package main

import (
	"fmt"
	"secondproject/model"
	"secondproject/service"
)

type customerView struct {
	key        string
	loop       bool
	ctsService *service.CustomerService
}

// 查询所有成员信息
func (this *customerView) list() {
	cusSlice := this.ctsService.List()
	fmt.Println("-------客户列表-------")
	fmt.Println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱")
	for i := 0; i < len(cusSlice); i++ {
		// getInfo 客户信息
		cusInfo := cusSlice[i].GetInfo()
		fmt.Println(cusInfo)
	}
	fmt.Println("-----客户列表完成-------")
}

func (this *customerView) add() {
	fmt.Println("-------添加客户-------")
	fmt.Println("姓名：")
	name := ""
	fmt.Scanln(&name)
	fmt.Println("性别：")
	gender := ""
	fmt.Scanln(&gender)
	fmt.Println("年龄：")
	age := 0
	fmt.Scanln(&age)
	fmt.Println("电话：")
	phone := ""
	fmt.Scanln(&phone)
	fmt.Println("邮箱：")
	email := ""
	fmt.Scanln(&email)
	customer := model.NewCustomerWithoutId(name, gender, age, phone, email)
	success := this.ctsService.Add(customer)
	if success {
		fmt.Println("-----添加成功-----")
	} else {
		fmt.Println("-----添加失败-----")
	}
}

// 删除
func (this customerView) delete() {
	fmt.Println("-------删除客户-------")
	fmt.Println("请选择要删除客户的编号（-1退出）：")
	id := -1
	fmt.Scanln(&id)
	if -1 == id {
		return
	}
	fmt.Println("确认要删除（Y/N）:")
	choice := ""
	for true {
		fmt.Scanln(&choice)
		if "Y" == choice || "N" == choice {
			break
		}
		fmt.Println("输入有误，重新输入 Y/N")
	}
	if "N" == choice {
		return
	}
	success := this.ctsService.Delete(id)
	if success {
		fmt.Println("-----删除成功-----")
	} else {
		fmt.Println("-----删除失败-----")
	}
}

// 退出
func (this *customerView) exit() {
	fmt.Println("确认是否要退出（Y/N）：")
	choice := ""
	for true {
		fmt.Scanln(&choice)
		if "Y" == choice || "N" == choice {
			break
		}
		fmt.Println("输入有误，重新输入 Y/N")
	}
	if "Y" == choice {
		this.loop = false
	}
}

// 主菜单
func (ctv *customerView) Menu() {
	for {
		fmt.Println("------客户信息管理-------")
		fmt.Println("	1 添加客户")
		fmt.Println("	2 修改客户")
		fmt.Println("	3 删除客户")
		fmt.Println("	4 客户列表")
		fmt.Println("	5 退  出")
		fmt.Println("请选择（1-5）：")

		fmt.Scanln(&ctv.key)
		switch ctv.key {
		case "1":
			//fmt.Println("添加客户")
			ctv.add()
		case "2":
			fmt.Println("修改客户")
		case "3":
			//fmt.Println("删除客户")
			ctv.delete()
		case "4":
			//fmt.Println("客户列表")
			ctv.list()
		case "5":
			ctv.exit()
			//ctv.loop=false
			fmt.Println("已退出。。。")
		default:
			fmt.Println("输入错误，重新输入（1-5）：")
		}
		if !ctv.loop {
			break
		}
	}
}

func main() {
	// 创建 CustomerService
	cusService := service.NewCustomerService()
	// 创建 customerView,并初始化字段
	cusView := customerView{
		key:  "",
		loop: true,
		// 初始化 CustomerService
		ctsService: cusService,
	}
	// 主菜单
	cusView.Menu()

}
